🎖️GitЯра🎖️
Commit 4e8fe30645afeede97b1d0aeee3722c32be62c31
Parents : 64a579b
Author : James Rich <james.a.rich@gmail.com>
Date : 2026-05-18T22:04:37-05:00
feat(screenshots): add toggle matrix previews for compact and complete
Matrix screenshots show node items in various toggle combinations:
- Compact: all fields, health only, no metrics, no footer, metrics+footer, minimal
- Complete: with/without metrics toggle
Each row labeled with active state for quick visual reference.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Changes
6 files changed, 138 insertions(+), 0 deletions(-)
Diff
diff --git a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettingsPreviews.kt b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettingsPreviews.kt
index d3501f4af8..6801b1ba80 100644
--- a/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettingsPreviews.kt
+++ b/feature/settings/src/commonMain/kotlin/org/meshtastic/feature/settings/component/NodeLayoutSettingsPreviews.kt
@@ -16,10 +16,14 @@
*/
package org.meshtastic.feature.settings.component
+import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
+import androidx.compose.material3.HorizontalDivider
+import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.PreviewLightDark
@@ -218,6 +222,124 @@ fun SampleNodeCompactNameOnlyPreview() {
}
}
+/**
+ * Matrix view showing compact node item in various toggle states. Each row: label describing active toggles → rendered
+ * node item.
+ */
+@Suppress("PreviewPublic", "LongMethod")
+@PreviewLightDark
+@Composable
+fun SampleNodeCompactToggleMatrixPreview() {
+ val node = previewSampleNode(hopsAway = 0)
+ val local = previewLocalNode()
+ AppTheme {
+ Surface {
+ Column(modifier = Modifier.fillMaxWidth().padding(8.dp), verticalArrangement = Arrangement.spacedBy(2.dp)) {
+ MatrixRow("All fields") { NodeItemCompact(thisNode = local, thatNode = node, distanceUnits = 0) }
+ MatrixRow("Health only") {
+ NodeItemCompact(
+ thisNode = local,
+ thatNode = node,
+ distanceUnits = 0,
+ showHops = false,
+ showChannel = false,
+ showRole = false,
+ showTelemetry = false,
+ )
+ }
+ MatrixRow("No metrics") {
+ NodeItemCompact(thisNode = local, thatNode = node, distanceUnits = 0, showTelemetry = false)
+ }
+ MatrixRow("No footer") {
+ NodeItemCompact(
+ thisNode = local,
+ thatNode = node,
+ distanceUnits = 0,
+ showHops = false,
+ showChannel = false,
+ showRole = false,
+ )
+ }
+ MatrixRow("Metrics + footer") {
+ NodeItemCompact(
+ thisNode = local,
+ thatNode = node,
+ distanceUnits = 0,
+ showPower = false,
+ showLastHeard = false,
+ showLocation = false,
+ showSignal = false,
+ )
+ }
+ MatrixRow("Minimal (name only)") {
+ NodeItemCompact(
+ thisNode = local,
+ thatNode = node,
+ distanceUnits = 0,
+ showPower = false,
+ showLastHeard = false,
+ showLocation = false,
+ showHops = false,
+ showSignal = false,
+ showChannel = false,
+ showRole = false,
+ showTelemetry = false,
+ )
+ }
+ }
+ }
+ }
+}
+
+/** Matrix view showing complete node item with/without metrics toggle. */
+@Suppress("PreviewPublic")
+@PreviewLightDark
+@Composable
+fun SampleNodeCompleteToggleMatrixPreview() {
+ val node = previewSampleNode()
+ val local = previewLocalNode()
+ AppTheme {
+ Surface {
+ Column(modifier = Modifier.fillMaxWidth().padding(8.dp), verticalArrangement = Arrangement.spacedBy(2.dp)) {
+ MatrixRow("With metrics") {
+ NodeItem(
+ thisNode = local,
+ thatNode = node,
+ distanceUnits = 0,
+ tempInFahrenheit = false,
+ connectionState = ConnectionState.Connected,
+ showTelemetry = true,
+ )
+ }
+ MatrixRow("Without metrics") {
+ NodeItem(
+ thisNode = local,
+ thatNode = node,
+ distanceUnits = 0,
+ tempInFahrenheit = false,
+ connectionState = ConnectionState.Connected,
+ showTelemetry = false,
+ )
+ }
+ }
+ }
+ }
+}
+
+@Composable
+private fun MatrixRow(label: String, content: @Composable () -> Unit) {
+ Column(modifier = Modifier.fillMaxWidth()) {
+ Text(
+ text = label,
+ style = MaterialTheme.typography.labelSmall,
+ color = MaterialTheme.colorScheme.primary,
+ modifier = Modifier.padding(start = 4.dp, bottom = 2.dp),
+ )
+ content()
+ HorizontalDivider(modifier = Modifier.padding(vertical = 4.dp))
+ }
+}
+
/** Sample node in Complete density with Fahrenheit temperature. */
@Suppress("PreviewPublic")
@PreviewLightDark
diff --git a/screenshot-tests/src/screenshotTest/kotlin/org/meshtastic/screenshots/feature/SettingsScreenshotTests.kt b/screenshot-tests/src/screenshotTest/kotlin/org/meshtastic/screenshots/feature/SettingsScreenshotTests.kt
index e41e0cb73c..afb14f5842 100644
--- a/screenshot-tests/src/screenshotTest/kotlin/org/meshtastic/screenshots/feature/SettingsScreenshotTests.kt
+++ b/screenshot-tests/src/screenshotTest/kotlin/org/meshtastic/screenshots/feature/SettingsScreenshotTests.kt
@@ -29,9 +29,11 @@ import org.meshtastic.feature.settings.component.PersistenceSectionPreview
import org.meshtastic.feature.settings.component.SampleNodeCompactAllFieldsPreview
import org.meshtastic.feature.settings.component.SampleNodeCompactNameOnlyPreview
import org.meshtastic.feature.settings.component.SampleNodeCompactSignalOnlyPreview
+import org.meshtastic.feature.settings.component.SampleNodeCompactToggleMatrixPreview
import org.meshtastic.feature.settings.component.SampleNodeCompleteFahrenheitPreview
import org.meshtastic.feature.settings.component.SampleNodeCompleteImperialPreview
import org.meshtastic.feature.settings.component.SampleNodeCompletePreview
+import org.meshtastic.feature.settings.component.SampleNodeCompleteToggleMatrixPreview
import org.meshtastic.feature.settings.radio.component.TakConfigCardPreview
import org.meshtastic.feature.settings.radio.component.TakServerSectionDisabledPreview
import org.meshtastic.feature.settings.radio.component.TakServerSectionEnabledPreview
@@ -179,3 +181,17 @@ fun ScreenshotSampleNodeCompleteFahrenheit() {
fun ScreenshotSampleNodeCompleteImperial() {
SampleNodeCompleteImperialPreview()
}
+
+@PreviewTest
+@PreviewLightDark
+@Composable
+fun ScreenshotSampleNodeCompactToggleMatrix() {
+ SampleNodeCompactToggleMatrixPreview()
+}
+
+@PreviewTest
+@PreviewLightDark
+@Composable
+fun ScreenshotSampleNodeCompleteToggleMatrix() {
+ SampleNodeCompleteToggleMatrixPreview()
+}
diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactToggleMatrix_Dark_d19fbf1f_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactToggleMatrix_Dark_d19fbf1f_0.png
new file mode 100644
index 0000000000..0cf733c151
Binary files /dev/null and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactToggleMatrix_Dark_d19fbf1f_0.png differ
diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactToggleMatrix_Light_b29dc7a7_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactToggleMatrix_Light_b29dc7a7_0.png
new file mode 100644
index 0000000000..80c4b9d288
Binary files /dev/null and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompactToggleMatrix_Light_b29dc7a7_0.png differ
diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteToggleMatrix_Dark_d19fbf1f_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteToggleMatrix_Dark_d19fbf1f_0.png
new file mode 100644
index 0000000000..69c6467c12
Binary files /dev/null and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteToggleMatrix_Dark_d19fbf1f_0.png differ
diff --git a/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteToggleMatrix_Light_b29dc7a7_0.png b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteToggleMatrix_Light_b29dc7a7_0.png
new file mode 100644
index 0000000000..3fec37c02d
Binary files /dev/null and b/screenshot-tests/src/screenshotTestDebug/reference/org/meshtastic/screenshots/feature/SettingsScreenshotTestsKt/ScreenshotSampleNodeCompleteToggleMatrix_Light_b29dc7a7_0.png differ
Served by rngit 1.4.2 - Generated in 0.13s